package com.zwh.se.collection.list;

import java.util.Vector;

/**
 * @author zwh
 *
 * Vector是向量的意思
 * 从 Java 2 平台 v1.2 开始,此类改进为实现了 List 接口,使其成为Java集合框架的一员。
 * 与新 collection 实现不同，Vector 用synchronized修饰 是同步的。
 * 所以相对于ArrayList来说，线程安全，但是效率就低了点。
 * 如果不需要实现线程安全,则可以使用 ArrayList
 */
@SuppressWarnings({"rawtypes", "unchecked"})
public class VectorDemo {
    public static void main(String[] args) {
        // 构造一个空向量，使其内部数据数组的大小为 10，其标准容量增量为零。
        // public Vector() { this(10, 0); }
        // 重要属性:
        // Object[] elementData: 底层存储元素的Object数组
        // int elementCount:数组中有效长度(相当于ArrayList中的size)
        Vector vector1 = new Vector();
        System.out.println(vector1.capacity());

        //使用指定的初始容量和等于零的容量增量构造一个空向量。
        // public Vector(int initialCapacity) { this(initialCapacity, 0); }
        Vector vector2 = new Vector(2);
        vector2.add(2);
        vector2.add(2);
        System.out.println(vector2.capacity());
        vector2.add(2);
        //int newCapacity =
        //      oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity);
        //没有设定容量增量的话就是扩容成原本容量的2倍
        System.out.println(vector2.capacity());
        //synchronized int size():返回当前集合中包含的元素个数
        System.out.println(vector2.size());

        /**
         * 使用指定的初始容量和容量增量构造一个空的向量。
         * initialCapacity - 向量的初始容量
         * capacityIncrement - 当向量溢出时容量增加的量
         */
        Vector vector3 = new Vector(1,5);
        vector3.add(1);
        //synchronized int capacity():返回此向量的当前容量。
        System.out.println(vector3.capacity());
        vector3.add(1);
        System.out.println(vector3.capacity());

    }
}
